home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / STRINGS.SWG / 0006_SPACES.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  615b  |  36 lines

  1. Function Spaces(NumSpaces : Byte) : String;
  2.  
  3. Var
  4.   s : String;
  5.  
  6. begin
  7.   s[0] := Chr(Numspaces);
  8.   If NumSpaces = 0 Then
  9.     Exit;
  10.   FillChar(s[1], NumSpaces, ' ');
  11.   Spaces := s;
  12. end;
  13.  
  14. {
  15. This still too slow For my taste, though...  there's a superfluous String
  16. copy and it still needs 512 Bytes of stack space.
  17. }
  18.  
  19. Function Spaces(NumSpaces : Byte) : String; Assembler;
  20.  
  21. Asm
  22.   LES    DI, @Result
  23.   CLD
  24.   MOV    AL, NumSpaces
  25.   xor    AH, AH
  26.   STOSB
  27.   XCHG   AX, CX
  28.   JCXZ   @Exit
  29.   MOV    AL, ' '
  30.   SHR    CX, 1
  31.   JNC    @Even
  32.   STOSB
  33. @Even:  REP    STOSW
  34. @Exit:
  35. end;  { Spaces }
  36.